# General options

option('vlc',
    type : 'boolean',
    value : true,
    description : 'Build the VLC executable program.')

option('tests',
    type : 'feature',
    value : 'auto',
    description : 'Build the VLC test executables.')

option('nls',
    type : 'feature',
    value : 'auto',
    description : 'Native Language Support')

option('optimize_memory',
    type : 'boolean',
    value : false,
    description : 'Optimize memory usage over performance')

option('binary_version',
    type : 'string',
    value : '',
    description : 'To avoid plugins cache problem between binary version')

option('stream_outputs',
    type : 'boolean',
    value : true,
    description : 'Build the VLC stream output modules')

option('videolan_manager',
    type : 'boolean',
    value : true,
    description : 'Build the VideoLAN manager')

option('addon_manager',
    type : 'boolean',
    value : true,
    description : 'Build the VLC add-on manager modules')

option('run_as_root',
    type : 'boolean',
    value : false,
    description : 'Allow running VLC as root')

option('branch_protection',
    type : 'feature',
    value : 'auto',
    description : 'AArch64 branch protection')

option('ssp',
    type : 'feature',
    value : 'auto',
    description : 'Stack smashing protection')

option('extra_checks',
    type : 'boolean',
    value : false,
    description : 'Turn some warnings into compilation error')

option('winstore_app',
    type : 'boolean',
    value : false,
    description : 'Build targeted for Windows Store apps')

option('update-check',
    type : 'feature',
    value : 'disabled',
    description : 'update checking system')

option('rust',
    type : 'feature',
    value : 'disabled',
    description : 'Experimental pure Rust VLC modules')

option('extra_rust_flags',
    type : 'array',
    value : [],
    description : 'Extra RUSTFLAGS to be passed to the compiler when compiling Rust VLC modules')

option('vendored_rust_deps',
    type : 'string',
    value : 'no',
    description : 'Should use vendored sources: `no`, `yes` or PATH_TO_VENDORED_SOURCES')

option('sse',
    type : 'feature',
    value : 'auto',
    description : 'SSE (2-4) optimizations')

option('avx',
    type : 'feature',
    value : 'auto',
    description : 'AVX (1-2) optimizations')

# TODO: Missing neon option
# TODO: Missing sve option
# TODO: Missing altivec option

# Font options

option('default_font_path',
    type : 'string',
    value : '',
    description : 'Path to the default font')

option('default_monospace_font_path',
    type : 'string',
    value : '',
    description : 'Path to the default monospace font')

option('default_font_family',
    type : 'string',
    value : '',
    description : 'Name of the default font family')

option('default_monospace_font_family',
    type : 'string',
    value : '',
    description : 'Name of the default monospace font family')

# Module options

option('vcd_module',
    type : 'boolean',
    value : true,
    description : 'Built-in VCD and CD-DA support')

option('css_engine',
    type : 'feature',
    value : 'auto',
    description : 'CSS selector engine for WebVTT')

# Dependency options
option('chromecast',
    type : 'feature',
    value : 'auto',
    description : 'Enable chromecast support')

option('qt',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable Qt support')

option('qt_gtk',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable Qt GTK support')

option('qt_qml_debug',
    type: 'boolean',
    value: false,
    description: 'Enable/disable Qt QML debugger')

option('skins2',
    type : 'feature',
    value : 'auto',
    description : 'skins interface module support')

option('dbus',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable D-Bus message bus support')

option('wayland',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable wayland support')

option('x11',
    type : 'feature',
    value : 'auto',
    description : 'X11 support')

option('xcb',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable X11 support with XCB')

option('avcodec',
    type : 'feature',
    value : 'enabled',
    description : 'Enable/disable avcodec support')

option('merge-ffmpeg',
    type : 'boolean',
    value : false,
    description : 'merge FFmpeg-based plugins')

option('libva',
    type: 'feature',
    value: 'auto',
    description: 'VAAPI GPU decoding support (libVA)')

option('omxil',
    type: 'boolean',
    value: false,
    description: 'Enable/disable OpenMAX IL codec')

option('avformat',
    type : 'feature',
    value : 'enabled',
    description : 'Enable/disable avformat support')

option('alsa',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable ALSA support')

option('pipewire',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable PipeWire support')

option('pulse',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable Pulseaudio support')

option('oss',
    type: 'feature',
    value: 'auto',
    description: 'Enable/disable OSS support (default-enabled on BSD)')

option('sndio',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable sndio support')

option('ogg',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libogg support')

option('mpg123',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libmpg123 support')

option('schroedinger',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable schroedinger support')

option('openapv',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable OpenAPV decoder support')

option('rsvg',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable librsvg support')

option('cairo',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libcairo support')

option('freetype',
    type : 'feature',
    value : 'auto',
    description : 'Font rasterization support with freetype')

option('flac',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libflac support')

option('opus',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libopus support')

option('theoraenc',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable theoraenc support')

option('theoradec',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable theoradec support')

option('daaladec',
    type : 'feature',
    value : 'disabled',
    description : 'Enable/disable experimental daaladec support')

option('daalaenc',
    type : 'feature',
    value : 'disabled',
    description : 'Enable/disable experimental daalaenc support')

option('vorbis',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable vorbis support')

option('vsxu',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable VSXU visualization support')

option('x265',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libx265 support')

option('x264',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libx264 support')

option('x262',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libx262 support')

option('fdk-aac',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable fdk-aac support')

option('vpx',
    type : 'feature',
    value : 'auto',
    description : 'libvpx VP8/VP9 encoder and decoder')

option('shine',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable shine support')

option('aom',
    type : 'feature',
    value : 'auto',
    description : 'libaom AV1 decoder support')

option('rav1e',
    type: 'feature',
    value: 'auto',
    description: 'rav1e AV1 encoder support')

option('dav1d',
    type : 'feature',
    value : 'auto',
    description : 'libdav1d AV1 decoder support')

option('twolame',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable twolame support')

option('vpl',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libvpl support')

option('spatialaudio',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libspatialaudio support')

option('samplerate',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libsamplerate support')

option('soxr',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable soxr support')

option('speex',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable speex support')

option('speexdsp',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable speexdsp support')

option('caca',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable caca support')

option('drm',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libdrm support')

option('goom2',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable goom2 visualization plugin')

option('avahi',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable zeroconf (avahi) services discovery plugin')

option('upnp',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable UPnP plugin (Intel SDK)')

option('libxml2',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable XML support')

option('medialibrary',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable medialibrary support')

option('faad',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable faad support')

option('fluidsynth',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable fluidsynth/fluidlite support')

option('microdns',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable microdns support')

option('gnutls',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable GnuTLS support')

option('libsecret',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libsecret support')

option('matroska',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable matroska (MKV) support')

option('libdvbpsi',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libdvbpsi support')

option('dvbcsa',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libdvbcsa support')

option('aribb24',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable aribb24 support')

option('libmodplug',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libmodplug support')

option('taglib',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable taglib support')

option('libcddb',
    type : 'feature',
    value : 'auto',
    description : 'Enable/disable libcddb support')

option('libass',
    type : 'feature',
    value : 'auto',
    description : 'ASS/SSA subtitle support using libass')

option('libchromaprint',
    type : 'feature',
    value : 'auto',
    description : 'Audio fingerprinting support using chromaprint')

option('mad',
    type : 'feature',
    value : 'auto',
    description : 'MP3 decoding support using libmad')

option('png',
    type : 'feature',
    value : 'enabled',
    description : 'PNG support')

option('jpeg',
    type : 'feature',
    value : 'auto',
    description : 'JPEG support')

option('bpg',
    type : 'feature',
    value : 'disabled',
    description : 'BPG support')

option('aribsub',
    type : 'feature',
    value : 'auto',
    description : 'ARIB Subtitles support')

option('telx',
    type : 'feature',
    value : 'auto',
    description : 'Teletext decoding support (conflicting with zvbi, default enabled if zvbi is absent)')

option('zvbi',
    type : 'feature',
    value : 'enabled',
    description : 'VBI (inc. Teletext) decoding support with libzvbi')

option('kate',
    type : 'feature',
    value : 'auto',
    description : 'kate codec')

option('tiger',
    type : 'feature',
    value : 'auto',
    description : 'Tiger rendering library for Kate streams')

option('libplacebo',
    type : 'feature',
    value : 'auto',
    description : 'libplacebo support')

option('gles2',
    type : 'feature',
    value : 'disabled',
    description : 'GLES2 support')

option('lua',
    type : 'feature',
    value : 'enabled',
    description : 'Lua support')

option('srt',
    type : 'feature',
    value : 'auto',
    description : 'SRT input/output plugin')

option('vulkan',
    type : 'feature',
    value : 'auto',
    description : 'vulkan output')

option('screen',
    type : 'feature',
    value : 'enabled',
    description : 'screen capture')

option('freerdp',
    type : 'feature',
    value : 'auto',
    description : 'RDP/Remote Client Desktop support')

option('vnc',
    type : 'feature',
    value : 'auto',
    description : 'VNC/rfb client support')

option('swscale',
    type : 'feature',
    value : 'enabled',
    description : 'libswscale image scaling and conversion')

option('postproc',
    type : 'feature',
    value : 'auto',
    description : 'libpostproc image post-processing')

option('ebur128',
    type : 'feature',
    value : 'auto',
    description : 'EBU R 128 standard for loudness normalisation')

option('rnnoise',
    type : 'feature',
    value : 'auto',
    description : 'Rnnoise denoiser')

option('mtp',
    type : 'feature',
    value : 'auto',
    description : 'MTP devices support')

option('wasapi',
    type: 'feature',
    value: 'auto',
    description: 'Use the Windows Audio Session API')

option('macosx_avfoundation',
    type: 'feature',
    value: 'auto',
    description: 'macOS AVCapture (Video) module')

option('dc1394',
    type: 'feature',
    value: 'auto',
    description: 'IIDC FireWire input module')

option('dv1394',
    type: 'feature',
    value: 'auto',
    description: 'DV FireWire input module')

option('linsys',
    type: 'feature',
    value: 'auto',
    description: 'Linux Linear Systems Ltd. SDI and HD-SDI input cards')

option('dvdnav',
    type: 'feature',
    value: 'auto',
    description: 'DVD with navigation input module (dvdnav)')

option('dvdread',
    type: 'feature',
    value: 'auto',
    description: 'DVD input module (dvdread)')

option('bluray',
    type: 'feature',
    value: 'auto',
    description: 'Blu-ray input module (libbluray)')

option('shout',
    type: 'feature',
    value: 'auto',
    description: 'Icecast/Shoutcast stream output (libshout)')

option('ncurses',
    type: 'feature',
    value: 'auto',
    description: 'Text-based interface (ncurses)')

option('minimal_macosx',
    type: 'feature',
    value: 'auto',
    description: 'Minimal macOS interface support')

option('udev',
    type: 'feature',
    value: 'auto',
    description: 'Linux udev services discovery')

option('dsm',
    type: 'feature',
    value: 'auto',
    description: 'SMB/CIFS access/sd support')

option('live555',
    type: 'feature',
    value: 'auto',
    description: 'RTSP input through live555')

option('rist',
    type: 'feature',
    value: 'auto',
    description: 'librist support for access and access_output')

option('libgcrypt',
    type: 'feature',
    value: 'auto',
    description: 'libgcrypt support')

option('fontconfig',
    type: 'feature',
    value: 'auto',
    description: 'fontconfig support')

option('fribidi',
    type: 'feature',
    value: 'auto',
    description: 'Fribidi support')

option('harfbuzz',
    type: 'feature',
    value: 'auto',
    description: 'Harfbuzz support')

option('d3d11va',
    type: 'feature',
    value: 'auto',
    description: 'Direct3D11 avcodec support')

option('dxva2',
    type: 'feature',
    value: 'auto',
    description: 'DXVA2 avcodec support')

option('amf_scaler',
    type: 'feature',
    value: 'auto',
    description: 'AMF HQScaler support')

option('amf_frc',
    type: 'feature',
    value: 'auto',
    description: 'AMF Frame Doubler support')

option('amf_vqenhancer',
    type: 'feature',
    value: 'auto',
    description: 'AMF VQ Enhancer support')

option('directx',
    type: 'feature',
    value: 'auto',
    description: 'DirectX support')

option('projectm',
    type: 'feature',
    value: 'auto',
    description: 'projectM visualization plugin')

option('libssh2',
    type: 'feature',
    value: 'auto',
    description: 'libssh2 support')

option('sftp',
    type: 'feature',
    value: 'auto',
    description: 'SFTP file transfer via libssh2')

option('archive',
    type: 'feature',
    value: 'auto',
    description: 'libarchive support')

option('aribb25',
    type: 'feature',
    value: 'auto',
    description: 'ARIB STD-B25 support')

option('aribcaption',
    type: 'feature',
    value: 'auto',
    description: 'ARIB caption decoder/renderer support')

option('gme',
    type: 'feature',
    value: 'auto',
    description: 'Game Music Emu support')

option('mpc',
    type: 'feature',
    value: 'auto',
    description: 'libmpcdec support')

option('sid',
    type: 'feature',
    value: 'auto',
    description: 'C64 sid demux support')

option('nvdec',
    type: 'feature',
    value: 'auto',
    description: 'NVDEC decoder support')

option('decklink',
    type: 'feature',
    value: 'auto',
    description: 'DeckLink support')

option('nfs',
    type: 'feature',
    value: 'auto',
    description: 'support nfs protocol via libnfs')

# TODO: Missing v4l2
# TODO: Missing rpi-omxil
# TODO: Missing gst-decode
# TODO: Missing libva
# TODO: Missing tremor
# TODO: Missing x26410b
# TODO: Missing vdpau
# TODO: Missing kva
# TODO: Missing mmal
# TODO: Missing jack
# TODO: Missing opensles
# TODO: Missing kai
# TODO: Missing qt-qml-cache
# TODO: Missing qt-qml-debug
# TODO: Missing libtar
# TODO: Missing macosx
# TODO: Missing sparkle
# TODO: Missing lirc
# TODO: Missing vsxu
# TODO: Missing kwallet
# TODO: Missing osx_notifications
# TODO: Missing asdcplib
# TODO: Missing chromecast
